package com.xianggu.designMode.stateMethod.context;// -------------------------- 上下文类 --------------------------

import com.xianggu.designMode.stateMethod.PlayerState;
import com.xianggu.designMode.stateMethod.impl.StoppedState;

/**
 * 播放器上下文类：维护当前状态，并对外暴露操作方法（play/pause/stop）
 */
public class PlayerContext {
    // 当前状态（私有属性，通过方法修改）
    private PlayerState currentState;

    public PlayerContext() {
        this.currentState = new StoppedState(); // 初始状态：停止中
    }

    /**
     * 设置新的状态（仅供状态类内部调用）
     */
    public void setState(PlayerState state) {
        this.currentState = state;
    }

    /**
     * 执行播放操作（委托给当前状态处理）
     */
    public void play() {
        currentState.play(this);
    }

    /**
     * 执行暂停操作（委托给当前状态处理）
     */
    public void pause() {
        currentState.pause(this);
    }

    /**
     * 执行停止操作（委托给当前状态处理）
     */
    public void stop() {
        currentState.stop(this);
    }
}
